In system virtualization, multiple virtual machines are created within a single physical system. The physical system may be a stand-alone computer, or alternatively, a computing system utilizing clustered computers and components, such as a cloud computing system. Virtual machines are independent operating environments that use logical divisions of physical resources such as processors, memory, and input/output (I/O) systems. A virtual machine hypervisor logically divides the real resources amongst the virtual machines. Virtual machine hypervisors, also called virtual machine managers, use a thin layer of code in software or firmware to achieve resource sharing among the multiple virtual machines. The hypervisor typically virtualizes memory allocation to different virtual machines, and this often enables a greater virtual allocation of memory than real memory. The hypervisor also enables communication between virtual machines on the same physical machine, and to external networks. Typically, a “guest” operating system and one or more applications execute in each virtual machine.
A logical partition hypervisor divides physical system resources into isolated logical partitions (“LPARs”). A logical partition is similar to a virtual machine but typically has an allocation of real memory instead of virtual memory. Each logical partition operates like an independent system running its own operating environment. Exemplary operating environments include AIX®, IBM® i, Linux®, and the virtual I/O server (VIOS). The hypervisor can allocate dedicated processors, I/O adapters, and memory to each logical partition. The hypervisor can also allocate portions of shared processors to each logical partition. Further, the hypervisor can create a shared processor pool from which the hypervisor allocates virtual processors to the logical partitions as needed. In other words, the hypervisor creates virtual processors from physical processors so that logical partitions can share the physical processors while running independent operating environments.
In addition to defining and managing the logical partitions, the hypervisor can manage communication between the logical partitions. To facilitate communication, each logical partition may have a virtual adapter for communication between the logical partitions, via a virtual switch. The type of the virtual adapter depends on the operating environment used by the logical partition. Examples of virtual adapters include virtual Ethernet adapters, virtual Fibre Channel adapters, virtual Small Computer Serial Interface (SCSI) adapters, and virtual serial adapters. Virtual adapters are often implemented through a VIOS partition which manages the physical I/O adapters (SCSI disks, Fibre Channel disks, Ethernet, or CD/DVD optical devices). The other logical partitions may be considered “clients” or virtual I/O clients (VIOCs) to the VIOS.
A Virtual Machine hypervisor or an LPAR hypervisor can dynamically allocate and deallocate dedicated or shared resources (such as processors, I/O, and memory) among virtual machines while the virtual machines are actively in use. This allows the hypervisor to redefine available system resources to improve performance for each virtual machine. Such allocation and deallocation can be referred to as scaling.
Vertical scalability involves assigning to a workload more resources while the workload is running on a physical server or logical partition. Horizontal scalability involves the ability to deploy a workload on additional physical servers or logical partitions. According to current techniques, a hypervisor can vertically scale the resources allocated to a workload according to limits selected by administrative personnel. For example, an administrator can configure the hypervisor to allocate a predetermined number of processors to a virtual machine or LPAR when the existing processors allocated to the virtual machine or LPAR exceed a predetermined level of utilization.